home *** CD-ROM | disk | FTP | other *** search
- ;/****************************************************************
- ;This code is copyright 1993. All Rights Reserved. Authors:-
- ;
- ; Chris Hames
- ;
- ;****************************************************************/
-
- ; INCLUDE "defines.i"
-
- section data
-
- XDEF _mdtmps
-
- sbpr:
- dc.l 0
-
-
- section code
-
- XDEF _cpuclear
- XDEF _cpuclear2
-
- ; Could make this much faster if actual sizes are known
-
- _cpuclear: ; has to be multiple of 4 in size
- move.l 4(sp),a0 /* Pointer to mem
- move.l 8(sp),d0 /* size
- lsr.l #2,d0
- subq.l #1,d0
- moveq #0,d1
- loophere:
- move.l d1,(a0)+
- dbra d0,loophere
- rts
-
- _cpuclear2: ; has to be multiple of 4 in size
- move.l 4(sp),a0 /* Pointer to mem
- move.l 8(sp),d0 /* size
- lsr.l #2,d0
- subq.l #1,d0
- moveq #1,d1
- loophere2:
- move.l d1,(a0)+
- dbra d0,loophere2
- rts
-
- XREF _fastbm
- XREF _lines
-
-
- XDEF _fasttochip
-
- _fasttochip:
- movem.l d2-d7/a2-a6,-(sp)
- move.l 44+4(sp),a0 ;/* pointer to dst BitMap */
- lea _fastbm,a1 ;/* pointer to src bitmap */
- move.l #sbpr,a2
- move.w (a1),(a2)
- move.l 8(a1),a2 ;/* pointer to src mem */
- move.l 8(a0),a3 ;/* pointer to dst plane0 */
- move.l 12(a0),a4 ;/* pointer to dst plane1 */
- move.l 16(a0),a5 ;/* pointer to dst plane2 */
- move.l 20(a0),a6 ;/* pointer to dst plane3 */
- move.l 24(a0),a1 ;/* pointer to dst plane4 */
-
- move.w (a0),d4 ;/* get bytes per row */
- move.w 2(a0),d5 ;/* get Rows */
-
- subq.w #1,d5 ;(Rows/2)-1
- floop:
- lea _lines,a0
- move.w sbpr,d6
- lsr.w #2,d6
- subq.w #1,d6
- ; moveq #(SBYTESPERROW/4)-1,d6
- lloop:
- movem.l (a2)+,d0-d3 ;Get 32 pixels (4 bitplanes)
- move.b d0,d4
- lsl.w #8,d4
- move.b d1,d4
- swap d4
- move.b d2,d4
- lsl.w #8,d4
- move.b d3,d4
- lsr.w #8,d0
- lsr.w #8,d1
- lsr.w #8,d2
- lsr.w #8,d3
- move.l d4,(a6)+ ;Do top copy
-
- move.b d0,d4
- lsl.w #8,d4
- move.b d1,d4
- swap d4
- move.b d2,d4
- lsl.w #8,d4
- move.b d3,d4
- swap d0
- swap d1
- swap d2
- swap d3
- move.l d4,(a5)+ ;Do top copy
-
- move.b d0,d4
- lsl.w #8,d4
- move.b d1,d4
- swap d4
- move.b d2,d4
- lsl.w #8,d4
- move.b d3,d4
- lsr.w #8,d0
- lsr.w #8,d1
- lsr.w #8,d2
- lsr.w #8,d3
- move.l d4,(a4)+ ;Do Top copy
-
- move.b d0,d4
- lsl.w #8,d4
- move.b d1,d4
- swap d4
- move.b d2,d4
- lsl.w #8,d4
- move.b d3,d4
- move.l d4,(a3)+ ;Do top copy
-
- move.l (a0)+,d4 ;Do the special 5th bitplane
- move.l d4,(a1)+
-
- dbra d6,lloop
-
- dbra d5,floop
-
- movem.l (sp)+,d2-d7/a2-a6
- rts
-
-
- XDEF _fasttochip2
-
- _fasttochip2:
- movem.l d2-d7/a2-a6,-(sp)
- move.l 44+4(sp),a0 ;/* pointer to dst BitMap */
- lea _fastbm,a1 ;/* pointer to src bitmap */
- move.l 8(a1),a2 ;/* pointer to src mem */
- move.l 8(a0),a3 ;/* pointer to dst plane0 */
- move.l 12(a0),a4 ;/* pointer to dst plane1 */
- move.l 16(a0),a5 ;/* pointer to dst plane2 */
- move.l 20(a0),a6 ;/* pointer to dst plane3 */
- move.l 24(a0),a1 ;/* pointer to dst plane4 */
-
- move.w (a0),d4 ;/* get bytes per row */
- move.w 2(a0),d5 ;/* get Rows */
-
- lsr.w #1,d5
- subq.w #1,d5 ;((Rows/2)/2)-1
- floop2:
- lea _lines,a0
- move.w sbpr,d6
- lsr.w #2,d6
- subq.w #1,d6
- ; moveq #(SBYTESPERROW/4)-1,d6
- lloop2:
- move.w sbpr,d2
- movem.l (a2)+,d0-d1 ;Get 16 pixels (4 bitplanes)
- move.l a2,-(sp)
- lea Table,a2
- moveq #0,d4
- move.b d0,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- swap d4
- move.b d1,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- move.l d4,0(a6,d2.w) ;Do top copy
- move.l d4,(a6)+ ;Do top copy
- lsr.w #8,d0
- lsr.w #8,d1
-
- moveq #0,d4
- move.b d0,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- swap d4
- move.b d1,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- move.l d4,0(a5,d2.w) ;Do top copy
- move.l d4,(a5)+ ;Do top copy
- swap d0
- swap d1
-
- moveq #0,d4
- move.b d0,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- swap d4
- move.b d1,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- move.l d4,0(a4,d2.w) ;Do top copy
- move.l d4,(a4)+ ;Do top copy
- lsr.w #8,d0
- lsr.w #8,d1
-
- moveq #0,d4
- move.b d0,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- swap d4
- move.b d1,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- move.l d4,0(a3,d2.w) ;Do top copy
- move.l d4,(a3)+ ;Do top copy
-
- moveq #0,d4
- move.w (a0)+,d1 ;Do the special 5th bitplane
- move.w d1,d4
- lsr.w #8,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- swap d4
- move.b d1,d4
- add.w d4,d4 ; This is not needed if 68020+
- move.w 0(a2,d4.w),d4
- move.l d4,0(a1,d2.w) ;Do top copy
- move.l d4,(a1)+ ;Do top copy
-
- move.l (sp)+,a2
- dbra d6,lloop2
-
- move.w sbpr,d6
- adda.w d6,a6
- adda.w d6,a5
- adda.w d6,a4
- adda.w d6,a3
-
- adda.w d6,a1
-
- dbra d5,floop2
-
- movem.l (sp)+,d2-d7/a2-a6
- rts
-
- XDEF _ReadEClock
-
- _ReadEClock:
- move.l 4(sp),a0
- move.l a6,-(sp)
- move.l _TimerBase#,a6
- jsr -$3c(a6)
- move.l (sp)+,a6
- rts
-
-
- section data
-
- Table:
- dc.w $0000,$0003,$000c,$000f,$0030,$0033,$003c,$003f
- dc.w $00c0,$00c3,$00cc,$00cf,$00f0,$00f3,$00fc,$00ff
- dc.w $0300,$0303,$030c,$030f,$0330,$0333,$033c,$033f
- dc.w $03c0,$03c3,$03cc,$03cf,$03f0,$03f3,$03fc,$03ff
- dc.w $0c00,$0c03,$0c0c,$0c0f,$0c30,$0c33,$0c3c,$0c3f
- dc.w $0cc0,$0cc3,$0ccc,$0ccf,$0cf0,$0cf3,$0cfc,$0cff
- dc.w $0f00,$0f03,$0f0c,$0f0f,$0f30,$0f33,$0f3c,$0f3f
- dc.w $0fc0,$0fc3,$0fcc,$0fcf,$0ff0,$0ff3,$0ffc,$0fff
- dc.w $3000,$3003,$300c,$300f,$3030,$3033,$303c,$303f
- dc.w $30c0,$30c3,$30cc,$30cf,$30f0,$30f3,$30fc,$30ff
- dc.w $3300,$3303,$330c,$330f,$3330,$3333,$333c,$333f
- dc.w $33c0,$33c3,$33cc,$33cf,$33f0,$33f3,$33fc,$33ff
- dc.w $3c00,$3c03,$3c0c,$3c0f,$3c30,$3c33,$3c3c,$3c3f
- dc.w $3cc0,$3cc3,$3ccc,$3ccf,$3cf0,$3cf3,$3cfc,$3cff
- dc.w $3f00,$3f03,$3f0c,$3f0f,$3f30,$3f33,$3f3c,$3f3f
- dc.w $3fc0,$3fc3,$3fcc,$3fcf,$3ff0,$3ff3,$3ffc,$3fff
- dc.w $c000,$c003,$c00c,$c00f,$c030,$c033,$c03c,$c03f
- dc.w $c0c0,$c0c3,$c0cc,$c0cf,$c0f0,$c0f3,$c0fc,$c0ff
- dc.w $c300,$c303,$c30c,$c30f,$c330,$c333,$c33c,$c33f
- dc.w $c3c0,$c3c3,$c3cc,$c3cf,$c3f0,$c3f3,$c3fc,$c3ff
- dc.w $cc00,$cc03,$cc0c,$cc0f,$cc30,$cc33,$cc3c,$cc3f
- dc.w $ccc0,$ccc3,$cccc,$cccf,$ccf0,$ccf3,$ccfc,$ccff
- dc.w $cf00,$cf03,$cf0c,$cf0f,$cf30,$cf33,$cf3c,$cf3f
- dc.w $cfc0,$cfc3,$cfcc,$cfcf,$cff0,$cff3,$cffc,$cfff
- dc.w $f000,$f003,$f00c,$f00f,$f030,$f033,$f03c,$f03f
- dc.w $f0c0,$f0c3,$f0cc,$f0cf,$f0f0,$f0f3,$f0fc,$f0ff
- dc.w $f300,$f303,$f30c,$f30f,$f330,$f333,$f33c,$f33f
- dc.w $f3c0,$f3c3,$f3cc,$f3cf,$f3f0,$f3f3,$f3fc,$f3ff
- dc.w $fc00,$fc03,$fc0c,$fc0f,$fc30,$fc33,$fc3c,$fc3f
- dc.w $fcc0,$fcc3,$fccc,$fccf,$fcf0,$fcf3,$fcfc,$fcff
- dc.w $ff00,$ff03,$ff0c,$ff0f,$ff30,$ff33,$ff3c,$ff3f
- dc.w $ffc0,$ffc3,$ffcc,$ffcf,$fff0,$fff3,$fffc,$ffff
-
-
-